#!/bin/bash
# 功能: 停止森园区服务的脚本，使用时需注意，请结合自身的实际调整 BASE_DIR 变量
# 名称: stop_campus_singlehost.sh
# 作者: zxm
# 创建日期: 2024-11-27
# 版本: v1.0

echo -e "\e[1;33m请在执行脚本前根据实际情况调整临时环境变量设置!\e[0m\n"

# 基础目录
BASE_DIR=/uino

# 服务路径
CAMPUS_HOME="$BASE_DIR/campus_offline"
#MySQL_HOME="$BASE_DIR/mysql_tarsier_linux"

# 设置临时环境变量
export PM2_HOME="$BASE_DIR/campus_offline/node/.pm2"
export NODE_HOME="$BASE_DIR/campus_offline/node/bin"
export PATH="$PATH:$NODE_HOME"

# 非root执行的检测逻辑
if [ "$(id -u)" -eq 0 ]; then
    echo -e "\e[1;31m此脚本必须以非root用户身份运行!\e[0m" 1>&2
    exit 1
fi

# 获取进程函数
get_pid() {
    local process_name="$1"
    if [[ "$process_name" == "campusbuilder" || "$process_name" == "cb-offline-sys" ]]; then
        # 如果进程名是 campusbuilder 或 cb-offline-sys，则使用 pm2 获取 PID
        pid=$(pm2 pid "$process_name")
    else
        # 否则，使用 ps 命令获取 PID
        pid=$(pgrep -f "$process_name")
    fi
}
# 停止服务的函数
kill_pid() {
    if [ -n "$pid" ]; then
        echo "服务 $1 存在，它的PID是 $pid"
        kill -15 $pid
        if [ $? -eq 0 ]; then
            echo -e "\e[1;32m停止 $1 成功\e[0m"
        else
            echo -e "\e[1;31m停止 $1 失败\e[0m"
        fi
    else
        echo -e "\e[1;33m服务 $1 并不存在，不需要停止\e[0m"
    fi
}
stop_service() {
    service_name=$1
    stop_command=$2
    if [ -n "$pid" ]; then
        echo "服务 $1 存在，它的PID是 $pid"
        eval ${stop_command}
        if [ $? -eq 0 ]; then
            echo -e "\e[1;32m停止 ${service_name} 成功\e[0m"
        else
            echo -e "\e[1;31m停止 ${service_name} 失败\e[0m"
        fi
    else
        echo -e "\e[1;33m服务 $1 并不存在，不需要停止\e[0m"
    fi
}

# 停止 森园区前端
get_pid campusbuilder
stop_service "森园区前端" "cd ${CAMPUS_HOME} && bash ./front/shells/campusbuilder-stop.sh 1>/dev/null"

# 停止 森园区后端
get_pid cb-offline-sys
stop_service "森园区后端" "cd ${CAMPUS_HOME} && bash ./backend/stop_pm2.sh 1>/dev/null"

# 停止 mysql
#get_pid ${MySQL_HOME}/bin/mysqld
#kill_pid "mysql"
